<template>
  <section class="todoapp">
    <!-- 除了驼峰, 还可以使用-转换链接 -->
    <TodoHeader @addFn="addFn" :list="list"></TodoHeader>
    <TodoMain :list="showList" @delFn="delFn"></TodoMain>
    <TodoFooter :list="showList" @changeShow="changeShow" @delTrue="delTrue"></TodoFooter>
  </section>
</template>

<script>
// 1.0 样式引入
import './styles/base.css'
import './styles/index.css'

import TodoHeader from './components/TodoHeader'
import TodoMain from './components/TodoMain'
import TodoFooter from './components/TodoFooter'

export default {
  components: {
    TodoHeader,
    TodoMain,
    TodoFooter
  },
  data() {
    return {
      list: JSON.parse(localStorage.getItem('taskList')) || [],
      showFlag: 'all'
    }
  },
  methods: {
    // 添加任务
    addFn(taskName){
      this.list.push({
        id: this.list.length ? this.list.at(-1).id + 1 : 100,
        name: taskName,
        isDone: false
      })
    },
    delFn(id){
      this.list = this.list.filter(item => item.id !== id)
    },
    changeShow(flag){
      this.showFlag = flag
    },
    delTrue(){
      this.list = this.list.filter(item => item.isDone !== true)
    }
  },
  computed: {
    showList(){
      if(this.showFlag === 'yes') {
        return this.list.filter(item => item.isDone === true)
      }else if(this.showFlag === 'no') {
        return this.list.filter(item => item.isDone === false)
      }else {
        return this.list
      }
    },
  },
  watch: {
    list:{
      deep: true,
      handler(){
        return localStorage.setItem('taskList', JSON.stringify(this.list))
      }
    }
  }
}
</script>